package com.example.teacherdemo.Controller;

import com.example.teacherdemo.Entity.ResponseResult;
import com.example.teacherdemo.Entity.Student;
import com.example.teacherdemo.Entity.Teacher;
import com.example.teacherdemo.Service.UserLoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 教师登录控制器
 * 处理教师登录相关请求，对应接口文档中用户端的教师登录接口
 */
@RestController
@RequestMapping("")  // 类级别路径映射
public class UserLoginController {

    @Autowired
    private UserLoginService userLoginService;

    /**
     * 教师登录接口
     * 对应文档：用户端接口 -> 2.1 登录模块 -> 2.1.1 教师登录接口
     * @param teacher 包含登录信息的教师对象（姓名和密码）
     * @return 统一响应结果
     */
    @PostMapping("/teacher/login")  // 方法级别路径映射，完整路径为/teacher/login
    public ResponseResult<Teacher> teacherLogin(@RequestBody Teacher teacher) {
        // 调用服务层处理登录逻辑
        Teacher loginTeacher = userLoginService.teacherLogin(teacher.getName(), teacher.getPassword());

        if (loginTeacher != null) {
            // 登录成功，返回成功响应（包含教师信息，密码脱敏处理）
            loginTeacher.setPassword("******");  // 密码脱敏
            return ResponseResult.success("登录成功", loginTeacher);
        } else {
            // 登录失败，返回失败响应
            return ResponseResult.fail("4002", "密码错误");
        }
    }


    @PostMapping("/student/login")  // 方法级别路径映射，完整路径为/teacher/login
    public ResponseResult<Student> studentLogin(@RequestBody Student student) {
        // 调用服务层处理登录逻辑
        Student loginStudent = userLoginService.studentLogin(student.getName(), student.getPassword());

        if (loginStudent != null) {
            // 登录成功，返回成功响应（包含教师信息，密码脱敏处理）
            loginStudent.setPassword("******");  // 密码脱敏
            return ResponseResult.success("登录成功", loginStudent);
        } else {
            // 登录失败，返回失败响应
            return ResponseResult.fail("4002", "密码错误");
        }
    }
}
